home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue53 / Observer / Listing1.pas
Encoding:
Pascal/Delphi Source File  |  1999-11-19  |  1.1 KB  |  39 lines

  1. procedure TPortfolio.SetPrice(const StockName: string; Value: Real);
  2. var
  3.   i: integer;
  4. begin
  5.   for i:=0 to FList.Count-1 do
  6.     if CompareText(TStockPrice(FList).StockName,StockName)=0 then
  7.     begin
  8.       if TStockPrice(FList).Price<>Value then
  9.       begin
  10.         FPrice := Value;
  11.         Msg := TStockChangeMessage.Create(nil);
  12.         Msg.CreateParam(ptString,'StockName');
  13.         Msg.Params['StockName'].AsString := FStockName;
  14.         Msg.CreateParam(ptReal,'Price');
  15.         Msg. Params['Price'].AsReal := Value;
  16.         UpdateObservers(Msg);
  17.     end;
  18.     break;
  19.   end;
  20. end;
  21.  
  22. procedure TSubjectAbstract.UpdateObservers(Message: TSubjectMessage);
  23. var
  24.   i: integer;
  25. begin
  26.   try
  27.     for i:=0 to FObservers.Count-1 do
  28.       TObserverAbstract(FObservers[i]).DataToObserver(Message);
  29.   finally
  30.     If Message.Owner=nil then
  31.       Message.Free;
  32.   end;
  33. end;
  34.  
  35. procedure TObserverBarChart.DataToObserver(Message: TSubjectMessage);
  36. begin
  37.   if (Message is TStockChangeMessage) and Displaying(Message.Params['StockName'].AsString) then
  38.     RefreshStock(Message.Params['StockName'].AsString, Message.Params['Price'].AsReal);
  39. end;